/***********************************************************
 * 派乐科技馆多彩LED模块
 * 模块：Pillar_LED
 * 连线：WS2812B（D7）
 * 说明：val[7] - 灯珠序号(1-8)
 *      val[6] - 亮灭(1:亮;0:灭)
 *      val[5] - R
 *      val[4] - G
 *      val[3] - B
 * 时间：2021.01.11
 ***********************************************************/

#include <FastLED.h>
#include <Wire.h>

#define SLAVE_ADDRESS 0x02
#define LED_PIN     7
#define NUM_LEDS    8
CRGB leds[NUM_LEDS];
int num;
int R=0;
int G=0;
int B=0;
int flag = 0;

void setup() 
{
  FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
  for(int i=0; i<8; i++)
  {
    leds[i] = CRGB(0, 0, 0);
    FastLED.show();
    delay(500);
  }
  delay(2000);
  Wire.begin(SLAVE_ADDRESS);
  Wire.onReceive(receiveData);
  Wire.onRequest(sendData);
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);
}

int val[8];  // 定义一个8的数组

void loop()
{
  if(flag == 1)
  {
    /*
    for(int i=0; i<8; i++)  //输出接收到的数据
    {
      Serial.print("WireRead ");
      Serial.print(i);
      Serial.print(" =");
      Serial.println(val[i]);  
    }
    */
    num = val[7]-1;  //灯珠序号
    R = val[5]*2;  //红色
    G = val[4]*2;  //绿色
    B = val[3]*2;  //蓝色
    if(val[6] == 0)
    {
      R=0;
      G=0;
      B=0;  
    }
    leds[num] = CRGB(R, G, B);
    FastLED.show();
    flag = 0;
  }
}

void receiveData(int byteCount)
{
  //Serial.println("**********");
  while(Wire.available()>0) 
  {
    for(int i=0; i<8; i++)  // 依次读出8位数据
    {
      val[i] = Wire.read();
    }
    flag = 1;
  }
}

void sendData()
{
}
